package pe.edu.unmsm.fiee.sispagos.negocio.servicio.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import pe.edu.unmsm.fiee.sispagos.integracion.dao.CuentaxCobrarDao;
import pe.edu.unmsm.fiee.sispagos.negocio.modelo.CxCAlumnoDTO;
import pe.edu.unmsm.fiee.sispagos.negocio.modelo.VWCxCAlumnoDTO;
import pe.edu.unmsm.fiee.sispagos.negocio.servicio.CuentaPorCobrarService;
import pe.edu.unmsm.fiee.sispagos.negocio.servicio.VoucherPagoService;

@Service
public class CuentaPorCobrarServiceImpl implements CuentaPorCobrarService {

	@Resource
	VoucherPagoService vouchPagoService;
	@Resource
	CuentaxCobrarDao cuentaxCobrarDao;
	
	@Override
	public List<VWCxCAlumnoDTO> listarVWCuentasxCobrarxAlumno(String codigoAlumno) {
		return vouchPagoService.listarVWCxcPorCodAlumno(codigoAlumno);
	}
	@Override
	public List<VWCxCAlumnoDTO> ordenarCxC(List<VWCxCAlumnoDTO> cxcAlumno) {
		
		for (int i = 0; i < cxcAlumno.size(); i++) {
			for (int j = 0; j < cxcAlumno.size()-1; j++) {
				VWCxCAlumnoDTO aux=cxcAlumno.get(j);
				String aux1=cxcAlumno.get(j).getAnio()+cxcAlumno.get(j).getSemestre()+cxcAlumno.get(j).getTipoCta();
				String aux2=cxcAlumno.get(j+1).getAnio()+cxcAlumno.get(j+1).getSemestre()+cxcAlumno.get(j+1).getTipoCta();
				if(aux1.compareTo(aux2)>=1)
				{
					cxcAlumno.remove(j);
					cxcAlumno.add(j+1, aux);
				}
			}
		}
		return cxcAlumno;
	}
	@Override
	public void guardarCxCxAlumno(List<VWCxCAlumnoDTO> cxcAlumno) {
		if(cxcAlumno.size()>0)
			if(cuentaxCobrarDao.selectCountCxCxAlumno(cxcAlumno.get(0).getCodigoAlumno())>0)
				cuentaxCobrarDao.deleteCxCxAlumno(cxcAlumno.get(0).getCodigoAlumno());
		
		for (VWCxCAlumnoDTO vwCxCAlumnoDTO : cxcAlumno) {
			if(vwCxCAlumnoDTO.getTipoCta()==null)
				vwCxCAlumnoDTO.setTipoCta(2);
			if(vwCxCAlumnoDTO.getMontoDebe()==null)
				vwCxCAlumnoDTO.setMontoDebe(0.0);
			if(vwCxCAlumnoDTO.getMontoVoucher()==null)
				vwCxCAlumnoDTO.setMontoVoucher(0.0);
			
			if(!vwCxCAlumnoDTO.getSemestre().equals(""))
				cuentaxCobrarDao.insertCuentaxCobrar(vwCxCAlumnoDTO);
		}
	}

}
